import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from 'typeorm';

/*
 * @Author: 黑白灰01 3193273703@qq.com
 * @Date: 2025-08-29 18:00:27
 * @LastEditors: 黑白灰01 3193273703@qq.com
 * @LastEditTime: 2025-08-31 19:23:16
 * @FilePath: /hei-oa/src/user/entities/user.entity.ts
 * @Description: 用户实体类，包含用户基本信息、权限关联及状态管理
 */
@Entity('user')
export class User {
  @PrimaryGeneratedColumn()
  id: number; // 用户唯一标识

  /**
   * 登录账号（不可重复）
   */
  @Column({ unique: true, length: 50 })
  username: string;

  /**
   * 加密存储的密码（如BCrypt哈希）
   */
  @Column({ length: 100 })
  password: string;

  /**
   * 用户姓名
   */
  @Column({ length: 50, name: 'full_name' })
  fullName: string;

  /**
   * 所属部门（关联sys_dept.deptId）
   */
  @Column({ name: 'dept_id', default: 0 })
  deptId: number;

  /**
   * 邮箱（用于通知）
   */
  @Column({ nullable: true, length: 100 })
  email: string;

  /**
   * 手机号
   */
  @Column({ nullable: true, length: 20 })
  phone: string;

  /**
   * 状态（0-禁用，1-正常）
   */
  @Column({ default: 1 })
  status: number;

  /**
   * 最后登录时间
   */
  @Column({ type: 'datetime', nullable: true, name: 'last_login_time' })
  lastLoginTime: Date;

  /**
   * 创建时间
   */
  @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'create_time' })
  createTime: Date;

  /**
   * 更新时间
   */
  @Column({ 
    type: 'datetime', 
    default: () => 'CURRENT_TIMESTAMP', 
    onUpdate: 'CURRENT_TIMESTAMP',
    name: 'update_time' 
  })
  updateTime: Date;

}
    